#ifndef PROXY_H
#define PROXY_H

#include <memory>
#include "i_give_gifts.h"
#include "pursuit.h"
#include "school_girl.h"

class Proxy: public IGiveGifts
{
private:
  PursuitPtr pursuit_;
public:
  Proxy(SchoolGirlPtr girl) {
    pursuit_ = std::make_shared<Pursuit>(girl);
  }
  void giveDolls() override;
  void giveFlowers();
  void giveChocolate();
};
using ProxyPtr = std::shared_ptr<Proxy>; 

void Proxy::giveDolls() {
  pursuit_->giveDolls();
}

void Proxy::giveFlowers() {
  pursuit_->giveFlowers();
}

void Proxy::giveChocolate() {
  pursuit_->giveChocolate();
}

#endif